package cn.itcast.service.system.impl;

import cn.itcast.dao.system.UserDao;
import cn.itcast.domain.system.User;
import cn.itcast.service.system.UserService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.UUID;

@Service
public class UserServiceImpl implements UserService {

	@Autowired
	private UserDao userDao;

	//分页查询
	public PageInfo findAll(String companyId, int page, int size) {
		PageHelper.startPage(page,size);
		List<User> list = userDao.findAll(companyId);
		return new PageInfo(list);
	}

	//保存
	public void save(User user) {
		user.setId(UUID.randomUUID().toString());
		userDao.save(user);
	}

	//更新
	public void update(User user) {
		userDao.update(user);
	}

	//根据id查询用户
	public User findById(String id) {
		return userDao.findById(id);
	}

	//删除
	public void delete(String id) {
		userDao.delete(id);
	}

	/**
	 * 对用户分配角色
	 *      参数1：用户id
	 *      参数2：页面勾选的所有带分配角色id
	 * 业务逻辑
	 *      1.根据用户id删除用户角色中间表的数据
	 *      2.向用户角色中间表中保存所有数据
	 */
	public void changeRole(String userid, String[] roleIds) {
		//1.根据用户id删除用户角色中间表的数据
		userDao.deleteUserRole(userid);
		//2.循环迭代角色id，向用户角色中间表中保存所有数据
		for (String roleId : roleIds) {
			userDao.saveUserRole(userid,roleId);
		}
	}

	//根据邮箱查询用户
	public User findByEmail(String email) {
		return userDao.findByEmail(email);
	}
}
